// 包含头文件，声明了 MainWindowQDialogButtonBoxPros 类及其成员
#include "QDialogButtonBoxPros.h"
// 引入 Qt 调试输出头文件，可用于调试时打印信息
#include <QtDebug>
// 构造函数：MainWindowQDialogButtonBoxPros
// 参数 parent：父窗口指针，默认值为 nullptr
MainWindowQDialogButtonBoxPros::MainWindowQDialogButtonBoxPros(QWidget *parent)
        : QMainWindow(parent)  // 初始化基类 QMainWindow 的构造函数
{
    // 设置窗口在屏幕上的位置和大小（x=0, y=0，宽度=800，高度=600）
    this->setGeometry(0, 0, 800, 600);
    // 创建 QDialogButtonBox 对象，设置其父对象为当前主窗口
    dbb = new QDialogButtonBox(this);
    // 设置 QDialogButtonBox 在窗口中的位置和大小（x=300, y=200，宽=200，高=30）
    dbb->setGeometry(300, 200, 200, 30);
    // 添加一个标准的“取消”按钮到 QDialogButtonBox
    dbb->addButton(QDialogButtonBox::Cancel);
    // 设置该取消按钮的显示文本为“取 消”
    dbb->button(QDialogButtonBox::Cancel)->setText("取 消");
    // 创建一个自定义的 QPushButton 按钮，按钮文本为“自定义”
    pb = new QPushButton("自定义");
    // 将该自定义按钮添加到 QDialogButtonBox 中，使用角色类型：ActionRole（即普通操作按钮）
    dbb->addButton(pb, QDialogButtonBox::ActionRole);
    // 连接 QDialogButtonBox 的 clicked(QAbstractButton*) 信号
    // 到当前类的槽函数 dbbpbClicked(QAbstractButton*)
    // 当任何按钮被点击时，将自动调用对应的槽函数
    connect(dbb, SIGNAL(clicked(QAbstractButton*)),
            this, SLOT(dbbpbClicked(QAbstractButton*)));
}
// 析构函数：MainWindowQDialogButtonBoxPros
MainWindowQDialogButtonBoxPros::~MainWindowQDialogButtonBoxPros()
{
    // 资源释放在 Qt 中由父对象机制自动完成，这里可以不写任何内容
}
// 槽函数：dbbpbClicked
// 参数 bt：被点击的按钮指针，类型为 QAbstractButton*
// 用于判断用户点击了哪个按钮并进行响应
void MainWindowQDialogButtonBoxPros::dbbpbClicked(QAbstractButton *bt)
{
    // 如果点击的是“取消”按钮
    if (bt == dbb->button(QDialogButtonBox::Cancel))
    {
        // 输出调试信息：你已经点击【取消】按钮
        qDebug() << "你已经点击【取消】按钮" << endl;
    }
        // 如果点击的是自定义按钮
    else if (bt == pb)
    {
        // 输出调试信息：你已经点击【自定义】按钮
        qDebug() << "你已经点击【自定义】按钮" << endl;
    }
}
